Bbs2Web Version 1.07 Html Web Page Generator for Maximus BBS Systems 3rd November 1996 (C) Copyright 1996 by CodeLand Australia, All Rights Reserved Written by Colin Wheat colinw@ami.com.au http://www.ami.com.au ftp://ftp.ami.com.au 3:690/613.0@fidonet INTRODUCTION ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Bbs2Web is a simple web page generator for an OS/2 Maximus BBS system's file base. If it works for you, that's great. If not than I'm interested in hearing about it. I can't promise fixes or ongoing support, but assuming your problem may also turn up here on my system, it's possible I'll fix it for a subsequent version. As usual with Shareware and Freeware releases, there are no guarantees with this software. User beware, use it at your own risk. REQUIREMENTS ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1) OS/2 2.1 or above, WARP V4 (Merlin) recommended. OS/2 V2.1 and WARP would also require TCP/IP V2 with the suitable CSD's installed. 2) An HPFS partition to hold the generated output *.html files. Bbs2Web supports the nested Maximus V3.XX file area groups. For nested area output, files with long file names will be generated. E.g. "Os2.Network.Tcpip.Html". This is a design feature which cannot be changed. 3) An OS/2 httpd (WEB) server. IBM Internet Connection Server (ICS) is highly recommended. 4) A suitable server for file serving. Files can be served by the httpd server, but you may prefer to install an ftpd server for the purpose. 5) An active and working Maximus V3.XX OS/2 BBS file base. Maximus is the most popular OS/2 BBS package available. Note that it may be possible to modify a Max V2.xx system to successfully support Bbs2Web operation. 6) An active realtime 24hr internet link. The author operates via a dedicated V34 modem link, anything as fast or faster would do fine. Note that for intranet operation this is not requirement. FEATURE SUMMARY ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Bbs2Web generates a full set of Web pages representing a Maximus V3.xx file base. It includes support for file groups by building nested pages. CDROM file areas are supported, and can be excluded from the output pages. Download links are automatically placed in the output pages for every listed file. Files can be downloaded by a suitable server, usually either httpd or ftpd. This is controlled by the configuration file FileLinkPath statement. File areas can be excluded from the output by priviledge setting, using the configuration file ListPrivBelow statement. Bbs2Web also includes a file base search engine, MaxFind.Exe. All generated pages include a file name search entry form and a matching call to MaxFind.Exe via the Search button. MaxFind.Exe should be copied to your web server's cgi-bin sub-directory. Note that MaxFind.Exe also -needs- an environment variable set, to allow it to find the configuration file. MaxFind.Exe environment variable setting example: SET BBS2WEB_INI=f:\bin\bbs2web.ini DISTRIBUTION FILES ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ BBS2WEB.EXE - The Web page compiler BBS2WEB.INI - Compiler configuration text file MAXFIND.EXE - The Maximus 3.XX file base search engine BBS2WEB.TXT - This documentation INDEX.HTM - Example Bbs2Web generated Web page from the author's system BBS2WEB.GIF - Example background image for generated pages MASTBBS.GIF - Example masthead image for generated pages THE CONTROL FILE BBS2WEB.INI ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ [BBS2WEB] Denotes the start of data within the configuration file. Data is read from the configuration file beginning from the line following the [BBS2WEB] entry, and continues until a token beginning with a '[' character (e.g. [END]). ;-MAXIMUS-------------------------------------------------- MaxPath=F:\Bbs The Maximus directory. Several files are assumed to exist in this directory, including Farea.Dat and Maxfiles.Idx. AreaDatFile=Farea.Dat The name of the Maximus V3.xx file area data file, usually found in the Maximus directory. Bbs2Web will look for this file at the MaxPath path, see below. IncludeCdrom=Yes A flag to control the including or excluding of CDROM file areas for the output pages. ListPrivBelow=Extra File areas will only be included in the output pages when holding a priviledge less than the ListPrivBelow setting. File area priviledge levels are set in your Maximus FIlearea.Ctl control file. Note that Bbs2Web currently has NO support for override locks and levels. ListKeyAreas=No Bbs2Web supports only the standard Maximus priviledge levels, and does not support extended priviledges. "Normal" is a valid priviledge verb, "Normal/1" (note the Key extension) is not. Unknown priviledge strings are assigned a "Hidden" (65535) priviledge value so that such areas will not appear in the generated output. ListKeyAreas=No is the default operation. ListKeyAreas=Yes instructs Bbs2Web to trim "/" extensions from priviledge strings prior to further processing. This would for example convert "Normal/1" to "Normal" thus allowing areas thus marked to appear in the output listings. The effect is to ignore Key extensions in your file areas. ;-HTML CONTENT--------------------------------------------- BackGroundImage=/bbs/Bbs2Web.Gif An optional page background bitmap image, used on all output pages. HtmlTitle=The_Library_Network_BBS The Web page system title. Underscore characters are converted to space characters. HtmlMast=/bbs/MastBbs.Gif An optional masthead image, that replaces the HtmlTitle heading on generated pages. HtmlHeading=BBS_File_Areas The Web page sub-heading. Underscore characters are converted to space characters. ReturnLinkTitle=The_Library_Network The title for a link pointing the browsing user back to your site home page or equivalent. Underscore characters are converted to space characters. ReturnLinkPath=http://www.ami.com.au/ A link entry for the master Web page, pointing the browsing user back to your site home page or equivalent. NoSearch=No Bbs2Web defaults to adding a search form to every generated page. NoSearch=Yes disables the search form, Bbs2Web does not include the form on generated pages. CgiSrvrPath=http://www.ami.com.au/cgi-bin/maxfind.exe The CGI search engine full URL path and name. ;-HTML GENERATION------------------------------------------ HtmlFile=index.html The name of the generated master Web page. All other pages are linked from this page, or from pages linked from this page, recursively. HtmlPath=f:\bbs\html\ The path for the generated Web page files. You should create a sub-directory for this purpose. On the author's system, the Bbs2Web output Web pages total 438 files and !6.2 Megabytes of text/html data files. FileLinkPath=ftp://bbs.ami.com.au/pub/ The file download link path. Bbs file paths and names will be appended to this entry, for creation of the on page download link. You can send the files to the user via various servers, including httpd, and ftpd. Here's an example for a httpd served file for the author's system; "http://bbs.ami.com.au/pub/". Note that you'll need to setup your server to allow access to the file base. Bbs2Web filters out drive names from the Maximus supplied file download paths. See also the MapDrive command. MapDrive=j: /hobbes1/ Multiple MapDrive verbs can be listed, to a maximum of 16. Bbs2Web will convert a MapDrive listed drive letter or initial path to the supplied path, for the output page links. This is probably a required function for most systems. I've not considered the situation in depth, only that it's required here. Let me know if you're unable to fully serve your file base with the existing Bbs2Web features. [END] Denotes the end of Bbs2Web data within the control file. This verb is optional, end of file will also terminate control file data loading. FILE SERVING ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Setting up the file server and arranging for Bbs2Web to correctly build working file links in the output pages, is probably the largest part of the Bbs2Web installation task. :) I've attempted to clearly explain the control file verbs usage above, with the verbs FileLinkPath and MapDrive both directly affecting file serving. Rather than attempting an in depth discussion, I'll now provide an example of the working setup here, the environment in which and for which Bbs2Web was written. Bbs2Web finds the Maximus files by firstly reading the Farea.Dat file in the Maximus directory. From this file it's able to build a list of downloadable file areas. Here's one of the Maximus file areas on the system here, as represented in Filearea.Ctl. Farea.Dat is compiled from Filearea.Ctl, subject to specific Maximus configuration. FILEAREA LOCAL ACS Disgrace DESC System Utilities & Information DOWNLOAD H:\General\Newuser UPLOAD H:\Upload % FILELIST % OVERRIDE FILE File_Download Normal % TYPE % MENUNAME END FILEAREA The relevant entry is the file download path, "H:\General\Newuser". Having build a list of downloadable file areas, Bbs2Web accesses the data files (FILES.IDX/DAT/DMP) within each directory, to compile and generate the output Web pages. A Maximus V3.xx system uses the FILES.BBS text file as the master for the directory listing, so you'll want to run the file base compiler (fbp) -before- Bbs2Web is run, usually during nightly maintenance. We're ignoring CDROM areas in this simple explanation, for those areas the data files are actually found on the FILELIST path. So far that's not too difficult :). The problems begin to appear though when attempting to build a working download file link for each listed file. From the example above, we have a Maximus supplied path of "H:\General\Newuser". On the system here, I use the Toronto File System (TVFS) to build a ftp downloadable single drive representation of the complete BBS file base, itself spread across multiple server drives. The corresponding TVFS path is; "T:\pub\general\newuser". The ftp server is setup with a home directory of "T:\", so that a base ftp login shows the "\pub" directory available from root. For any one file from our example directory, say "LIBRARY.LZH", using a Bbs2Web FileLinkPath of "ftp://bbs.ami.com.au/pub/", and a file area path from Maximus of "/General/Newuser" (Bbs2Web converts '\' characters to '/' for the purpose of link creation), the resulting Web page listed file link becomes "ftp://bbs.ami.com.au/pub/general/newuser/LIBRARY.LZH". The MapDrive verb becomes useful (essential) for Maximus file paths that are mapped back to the one virtual drive for server usages such as ftp. As a short example; a CDROM file on the BBS has a path of "J:\Bbs\MAX300C.ZIP". For ftp server usage, that path is mapped by TVFS to "T:\pub\hobbes1\bbs\MAX300C.ZIP". With a MapDrive setting of "MapDrive=j: /hobbes1/" and by converting the '\' characters to '/' characters, the file path becomes "/hobbes1/Bbs/MAX300C.ZIP". With the addition of the FileLinkPath setting, the full file link is "ftp://bbs.ami.com.au/pub/hobbes1/Bbs/MAX300C.ZIP". THE SEARCH ENGINE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ The search engine MaxFind is a html CGI server utility. It should be moved to your Web server cgi-bin directory. Standard cgi usage uses program command line and stdout for remote communication, so configuration information is usualy passed via environment variables. In fact the Web server also passes the user's search request data to MaxFind via environment variables in this case. MaxFind uses methods and code similar to Bbs2Web to access the Maximus file bases. It's able to operate soley on the information contained within Bbs2Web.Ini. The one configuration requirement then, is to pass it the full path and name of the Bbs2Web.Ini configuration file. This is accomplished by the BBS2WEB_INI environment variable. e.g. SET BBS2WEB_INI=f:\bin\bbs2web.ini This must be placed in the OS/2 system CONFIG.SYS file. Technically, MaxFind uses a sub-string single key search, across all BBS listed file bases. This may be subject to enhancement in later versions of the program. Access restrictions identical to Bbs2Web apply to the resulting output. VERSION CHANGES ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ V1.00 - Released 96-03-24. The initial public release. V1.03 - Released 96-10-04. Minor code changes and bug fixes. Fixed a problem with html tokens in the file description fields, where too many '<' or '&' characters in the description field would overflow allocated storage. V1.04 - Released 96-10-09. Modified the MapDrive INI verb to support a partial path. The original design supported only drive letters. Changed the Maximus file area access support to allow and use the new Max V3 verbs. Bbs2Web was using the old V2 verbs (Twit) etc. Opps. V1.05 - Released 96-10-10. Added a new INI verb, CgiSrvrPath. CgiSrvrPath supplies the full URL path and name of the CGI search engine, usually MaxFind.Exe. Previously the search engine path was generated from the ReturnLinkPath URL. V1.06 - Released 96-10-29. Adjusted the area priviledge verb lookup function, to correctly supply caller nominated default responses for unknown verbs. Bbs2Web does not yet support keys in the privil verbs, so that an access level of "Normal/1" is an unknown verb. Bbs2Web will now set area/file priviledge levels to HIDDEN for unknown verbs, and the INI's ListPrivBelow setting to TRANSIENT for unknown privil verbs. This should stop Bbs2Web displaying files or areas which have unknown privil levels attached. Added new INI verb, "ListKeyAreas". ListKeyAreas defaults to off (No). When activated (ListKeyAreas=Yes), ListKeyAreas will instruct Bbs2Web to mask all key additions to priviledge strings. E.g. "Normal/1" would be translated to "Normal". The default action (ListKeyAreas=No) is to use privil verbs as supplied, and Bbs2Web does NOT support keys. Added a new INI verb, "BackGroundImage". E.g. BackGroundImage=/bbs/Bbs2Web.Gif BackGroundImage activates a background image file for the Bbs2Web generated html pages. The image file should be copied to a server accessable path, and a matching URL listed with the BackGroundImage verb. On the author's system the image file exists in the html output directory. Note that the background image is used by both Bbs2Web and MaxFind.Exe. BBS2WEB.GIF was also added to the distribution archive. V1.07 - Released 96-11-03. Fixed a problem with MaxFind, concerning string termination for the file name field within the FIDX structure used by MAXFILES.IDX. This should fix some problems with the search engine. Add new INI verb, NoSearch. With NoSearch=Yes, Bbs2Web does not include the search form on the generated html pages. Added new INI verb, HtmlMast. HtmlMast supplies the URL of and optional page masthead image. This replaces the HtmlTitle heading. Example: HtmlMast=/bbs/MastBbs.Gif Fixed a problem with priviledge value comparisons. Priviledge values are now stored as unsigned values. FEEDBACK ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Mail me a note at colinw@ami.com.au if you've found Bbs2Web useful on your system, or if you find problems with it's usage. Call by http://www.ami.com.au/bbs to see a working example. My interest at this time especially, is to use and push OS/2 to the limit with internet and tcp/ip usage. OS/2 is indeed an excellent product :). IBM's years of OS/2 support and development are bound to have major repercussions into the next decade, the writing is on the wall. This especially true now in the home/office and consumer markets, given MS's dismal longterm performance in the OS arena, not the least recently with the slightly sad and disappointing WIN3.XX upgrade, the predominately 16bit WIN95. With MS's own product life projection of 3yrs or less, Win95 has NO future even now shortly after it's (much belated) launch. With the need for stable 32bit OS's for the lead into the next centuary, OS/2 and it's future relatives are looking increasingly inviting to a great many people. If you haven't yet tasted real 32bit power on your desktop, run don't walk to your local OS/2 specialist and order your copy of the future now :). For Australian residents; Amisoft Computers can supply all your OS/2 hardware and software needs. Call them at (09) 293-3278 regarding your requirements.. IBM OS/2 WARP V4.0 (Upgrade Version) $199.00 IBM OS/2 WARP V4.0 (FullPack Version) $299.00 Regards, Colin Wheat. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ